package com.group.hugedatabehind.controller;

import com.group.hugedatabehind.pojo.MessageTimeDistribution;
import com.group.hugedatabehind.service.MessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

//使用@RestController后，该类中的所有方法都会将返回值直接作为JSON或XML等格式返回给客户端，而不是跳转到某个页面。
@RestController
@CrossOrigin(origins = "*", allowedHeaders = "*", methods = {RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE, RequestMethod.OPTIONS})
public class MessageController {
    //messageService会被注入为MessageService类型的Bean，该Bean由Spring容器管理。MessageService类中可能包含与消息处理相关的业务逻辑
    @Autowired
    private MessageService messageService;

    @PostMapping("/api/message/analyze")
    //@ResponseBody：表示控制器方法的返回值将直接作为HTTP响应体返回给客户端，而不是解析为视图。
    //ResponseEntity：用于封装HTTP响应，包括状态码、响应头和响应体。
    //Map<String, Object>：表示响应体的内容是一个键值对的集合，可以存储任意类型的数据。
    //@RequestBody：表示请求体的内容会被自动解析并映射到request参数中。
    //Map<String, String>：表示请求体是一个键值对的集合，键和值都是字符串类型。客户端可以通过JSON格式发送请求体，例如：{"message": "Hello"}。
    public ResponseEntity<Map<String, Object>> analyzeMessage(@RequestBody Map<String, String> request) {
        System.out.println("接收到的分析请求: " + request);
        String message = request.get("message");
        System.out.println("要分析的消息: " + message);
        List<MessageTimeDistribution> result = messageService.getMessageTimeDistribution(message);
        //创建一个Map作为响应体的内容。
        Map<String, Object> response = new HashMap<>();
        response.put("code", 200);
        response.put("message", "分析成功");
        response.put("data", result);
        //使用ResponseEntity.ok(response)创建一个HTTP响应，状态码为200，响应体为response
        return ResponseEntity.ok(response);
    }
}
